package yao.config;

import java.util.ArrayList;
import java.util.List;

/**
 * 节点对象
 * 
 * @author YaoMing
 */
public class Node {

	/** 路径分析器 */
	ArrayList<ConfigPath> configPath = new ArrayList<ConfigPath>();

	/** 子节点 */
	NodeMap nodeMap;

	boolean writeable;

	String fullName;

	String name;

	Value value;

	ValueMap valueMap;

	String text;

	Node() {
		nodeMap = new NodeMap();
	}

	/** 是否可修改 */
	public boolean isWriteable() {
		return writeable;
	}

	public ConfigPath[] getConfigPath() {
		return (ConfigPath[]) configPath.toArray(new ConfigPath[] {});
	}

	/**
	 * 节点下的所有子节点
	 * 
	 * @return
	 */
	public List<Node> getNodes() {
		return nodeMap.getNodes();
	}

	/**
	 * 根据节点名称取得子节点
	 * 
	 * @param name
	 * @return
	 */
	public Node getNode(String name) {
		return nodeMap.get(name);
	}

	public String getFullName() {
		return fullName;
	}

	public String getName() {
		return name;
	}

	public String getText() {
		return text;
	}

	public Value getValue() {
		return value;
	}

	public String toString() {
		return fullName + "=" + "\"" + value + "\"; //" + text;
	}
}
